﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MvcEngine.Core.Pagination;


namespace MvcEngine.Core.Content
{
    public interface IContentManager
    {
        IPagination<Page> GetPages(int pageIndex, int count);

        IList<Page> GetPages(bool onlyVisible);

        Page GetPage(Guid pageId);

        void SavePage(Page page);

        Page GetPage(string pageName);

        void DeletePage(Guid pageId);

        #region Page contents
        
        PageContent GetPageContent(int id);

        IList<PageContent> GetPageContents(Guid pageId);

        IList<PageContentDetails> GetPageContentDetails(Guid pageId);

        IList<PageContent> GetPageContentsByControl(Guid controlId);

        void SavePageContent(PageContent pageContent); 

        #endregion

        Control GetControl(Guid controlId);

        IList<Control> GetControls(Guid moduleId);

        IList<Control> GetControls();

        Control GetControlByKey(string controlKey);

        Container GetContainer(Guid containerId);

        Container GetContainer(string markupId);

        IList<Container> GetContainers();

        Module GetModule(Guid moduleId);

        IList<Module> GetModules();

        IList<Module> GetModules(bool isInstallable);
    }
}
